#pragma once
#include <string>
#include <vector>
#include "VectorXYZ.h"

#define ROOT_OBJ_PATH		"Models/"
#define ROOT_TEXTURE_PATH	"Textures/"

struct Face_obj {
	// faces specific to obj files rendered with 3DSmax
	// Format: f v1/vt1/vn1 v2/vt2/vn2 v3/vt3/vn3...
	int v[3]; //vertices
	int vt[3]; //texture points
	int vn[3]; //vertice normals
};

class Model {
public:
	/* Constructor / Deconstructor */
	Model (void);
	Model (std::string obj_path);
	
	/* Draw Functions */
	void Draw();
	void Draw(VectorXYZ position, VectorXYZ orientation, VectorXYZ up, float scale); 

	/* Load Functions */
	void LoadOBJFile(std::string obj_path);

private:
	/* Data members (Lists) */
	std::vector <VectorXYZ> vertices;
	std::vector <VectorXYZ> vertex_normals;
	std::vector <Face_obj> faces;
};